<template>
	<view>
		<!-- #ifdef MP -->
		<view>用户手机号:</view>
		<view v-if="Phoneparms">
			<view>相关参数openId：{{ Phoneparms.iv }}</view>
			<view>相关参数会话密钥session_key：{{ Phoneparms.encryptedData }}</view>
			<view>待使用相关参数调后台接口解析后，返回正确手机号</view>
		</view>
		<button type="default" size="mini" open-type="getPhoneNumber" @getphonenumber="ongetPhoneNumber">授权获取手机号登录</button>
		<!-- #endif -->
		
		<!-- #ifndef MP  -->
			除了小程序，其他端不执行相关操作
		<!-- #endif -->
	</view>
</template>

<script>
export default {
	data() {
		return {
			wxcode: '', //登录成功后code，（第一步）
			openId: '', //用户唯一的标识，（第二步）
			session_key: '', //会话密钥（第二步）
			Phoneparms: null
		};
	},
	onLoad() {
		// #ifdef MP
			this.login(); // 加载登录凭证
		// #endif
	},
	methods: {
		login() {
			// 获取登录用户code

			let _this = this;
			uni.login({
				provider: 'weixin',
				success(res) {
					_this.wxcode = res.code;
					console.log('第一步-登录后的code' + _this.wxcode);
					_this.getopenid(res);
				},
				fail(res) {
					console.log(res.errCode);
					console.log(res.errMsg);
				}
			});
		},
		getopenid(res) {
			let _this = this;
			uni.request({
				url: 'https://api.weixin.qq.com/sns/jscode2session',
				method: 'GET',
				data: {
					appid: 'wxb7553268c6e97740', //你的小程序的APPID
					secret: '3386c70557cb616d0b91c68a1528a172', //你的小程序的secret,
					js_code: res.code, //wx.login 登录成功后的code
					grant_type: 'authorization_code'
				},
				success: res => {
					_this.openId = res.data.openid;
					_this.session_key = res.data.session_key;
					console.log('第二步-' + _this.openId + '-' + _this.session_key);
				}
			});
		},
		ongetPhoneNumber(e) {
			console.log(e);
			let _this = this;
			if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
				uni.showToast({
					title: '拒绝授权',

					mask: false,

					duration: 1000,

					icon: 'none'
				});
			} else {
				//允许授权
				// POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN

				console.log(e.detail.errMsg); // 判断用户是否允许获取手机号
				console.log(e.detail.iv); // 参数 iv
				console.log(e.detail.encryptedData); // 参数encryptedData

				wx.checkSession({
					success() {
						console.log('未过期');
						if (e.detail.errMsg == 'getPhoneNumber:ok') {
							_this.Phoneparms = e.detail;
							// console.log('待调接口返回手机号');
						}
					},
					fail() {
						console.log('已经失效');
						// session_key 已经失效，需要重新执行登录流程
						// this.getWxCode(); //重新登录
					}
				});
			}
		}
	}
};
</script>
